#include <sys/file.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int is_single_instance() {
    int lock_fd = open("/tmp/asynchapp.lock", O_CREAT | O_RDWR, 0644);
    if (lock_fd == -1) {
        perror("open lock file failed");
        return 0;
    }
    
    if (flock(lock_fd, LOCK_EX | LOCK_NB) == -1) {
        close(lock_fd);
        return 0;  // 锁定失败，已有实例运行
    }
    
    // 锁定成功，程序继续运行
    return 1;
}

int main() {
    if (!is_single_instance()) {
        fprintf(stderr, "Another instance is already running.\n");
        return 1;
    }
    
    // 主程序逻辑
    while (1) {
        sleep(1);  // 保持文件锁
    }
}